<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="root">

    </div>
</body>
<script src="../react.js"></script>
<script src="../react-dom.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
<script type="text/babel">
    class App extends React.Component{
        // state 状态 是一个对象 用来存放当前组件中状态
        // state 用来存放当前组件状态数据 是可以改变的当前改变状态视图自动更新
        // state={
        //     name:"张三",
        //     age:18,
        //     num:0,
        //     list:["关羽","张飞","赵云"]
        // }
        constructor(){
            super();
            this.state ={
            name:"张三",
            age:18,
            num:0,
            list:["关羽","张飞","赵云"] 
            }
        }
        render(){
            console.log(this)
            let {name,age,num} = this.state;
            return (
                <div>
                    <h1>state状态</h1>
                    <h2>{name}-{age}-{num}</h2>
                    <button onClick={()=>{
                        // 因为react是单向数据流 所以改变状态视图无法直接更新
                        num++;
                        // 更新state状态 每调用一次 render方法就会执行一次 并且生成新的虚拟dom
                        // 一次可以更新多个状态
                        this.setState({
                            num:num,
                            age:28,
                            name:"李四"
                        })
                    }}>++</button>   
                    <ol>
                        {
                            this.state.list.map((item,index)=>{
                                return <li key={index}>{item}</li>
                            })
                        }
                    </ol> 
                    <button onClick={()=>{
                        this.state.list[0] = "刘备"
                        this.state.list.push("马槽")
                        this.setState({
                            list:this.state.list
                        })
                    }}>改变</button>
                </div>
            )
        }
    }
    ReactDOM.render(<App/>,document.getElementById("root"))
</script>
</html>